package com.example.javaproject.jvm;

import com.example.javaproject.ToDo;

import java.util.ArrayList;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * Description:
 * <br/>Author:  tianjinyong
 * <br/>Date:    2020/4/28 5:41 PM
 */
public class TestStoreArea {

    public static ToDo toDo = new ToDo();

    public static void main(String[] args) {
        testString01();
    }

    public static void testString01() {
        testString();
//        testaa();
    }

    /**
     * @see <a href="https://www.cnblogs.com/gxyandwmm/p/9495923.html">理解string的字符串常量池</>
     */
    public static void testString() {
//        //首先此行代码创建了两个对象，在执行前会在常量池中创建一个"1"的对象，然后执行该行代码时new一个"1"的对象存放在堆区中；然后str1指向堆区中的对象；
//        String str1 = new String("1");
//        //该行代码首先查看"1"字符串有没有存在在常量池中，此时存在则直接返回该常量，这里返回后没有引用接受他，【假如不存在的话在 jdk1.6中会在常量池中建立该常量，在jdk1.7以后会把堆中该对象的引用放在常量池中】
//        str1.intern();
//        String str2 = "1";
//        System.out.println(str1 == str2);  //结果是 false or true？
//
//        //str3 此行代码执行的底层执行过程是 首先使用StringBuffer的append方法将"2"和"2"拼接在一块，然后调用toString方法new出“22”；所以此时的“22”字符串是创建在堆区的；
//        String str3 = new String("2") + new String("2");
//        str3.intern();
//        //st4是常量池中堆对象
//        String str4 = "22";
//        System.out.println(str3 == str4); //结果是 false or true？

//        String str1 = "aaa";
//        String str2 = "bbb";
//        String str3 = "aaabbb";
//        String str4 = str1 + str2;
//        String str5 = "aaa" + "bbb";
//        System.out.println(str3 == str4); // false or true
//        System.out.println(str3 == str4.intern()); // true or false
//        System.out.println(str3 == str5);// true or false

//        String t1 = new String("2");
//        String t2 = "2";
//        t1.intern();
//        System.out.println(t1 == t2); //false or true
//
//        String t3 = new String("2") + new String("2");
//        String t4 = "22";
//        t3.intern();
//        System.out.println(t3 == t4); //false or true
    }


    public static void testaa() {
        String currentContent = "12.12";

        if (currentContent.contains(".")) {
            if (".".equals(currentContent)) {
                return;
            }
            //判断2位小数
            String end = currentContent.substring(currentContent.lastIndexOf(".") + 1);
            System.out.println(end);
        }

    }


}
